;Copyright 2000 - Mark McDonald All rights reserved
; MCOLS routine for PowerBASIC
; DECLARE: SUB MCOLS(BYVAL integer, BYVAL integer)
; DESC:    Set Mouse horizontal limits.
; EXAMP:   MCOLS Col, Cols

extrn   GETVMODE: Far

MCODE Segment Byte
        Assume  CS: MCODE

        Public  MCOLS

MCOLS Proc Far

ARG     Cols:   WORD, Col: WORD = Retbytes

        push    BP                      ;
        mov     BP, SP                  ;
        push    DS                      ;

;       call    GETVMODE                ; get screen mode

        mov     CX, Col                 ; CX = Col
        dec     CX                      ; make zero based

;       cmp     AX, 3                   ; 80 x 25 color?
;       je      FixCol                  ; yes, adjust
;       cmp     AX, 7                   ; 80 x 25 mono?
;       jne     GetCols                 ; no, get columns
FixCol:
        add     CX, CX                  ; times 2
        add     CX, CX                  ; times 4
        add     CX, CX                  ; times 8
GetCols:
        mov     DX, Cols                ; DX = Cols
        dec     DX                      ; zero based

;       cmp     AX, 3                   ; 80 x 25 color?
;       je      FixCols                 ; yes, adjust
;       cmp     AX, 7                   ; 80 x 25 mono?
;       jne     SetLimit                ; no, get columns
FixCols:
        add     DX, DX                  ; times 2
        add     DX, DX                  ; times 4
        add     DX, DX                  ; times 8
SetLimit:
        add     DX, CX                  ; add Col and Cols

        mov     AX, 07h                 ;
        int     33h                     ;

        pop     DS                      ;
        pop     BP                      ;
        retf    Retbytes                ;

MCOLS EndP
MCODE EndS
        End
